#include <WiFi.h>

char ssid[] = "SSID_site";      	//SSID site
char key[] = "klic_site";       	//klic site
int keyIndex = 0;         			//cislo klice
int status = WL_IDLE_STATUS;		//pomocna promenna uchovavajici stav pripojeni

void setup(){
    Serial.begin(9600);

    //zkontroluje, jestli je shield pripojen 
    if (WiFi.status() == WL_NO_SHIELD) {
        Serial.println("WiFi shield neni pripojen"); 
        while(true); //zacykli program, nic se nebude dit dal
    } 

    //pripoji se k siti
    while ( status != WL_CONNECTED) { 
        Serial.print("Pripojuji se k SSID: ");
        Serial.println(ssid);
        status = WiFi.begin(ssid, keyIndex, key);
        delay(10000);
    }

    Serial.print("Jste pripojen");
    printCurrentNet();
    printWifiData();
}
void loop(){
    //kazdych 10 sekund zkontrolujeme WiFi sit
    delay(10000);
    printCurrentNet();
}

void printWifiData() {
    //funkce pro vypis IP a MAC shieldu
    IPAddress ip = WiFi.localIP();
    Serial.print("IP adresa: ");
    Serial.println(ip);
    Serial.println(ip);

    byte mac[6];  
    WiFi.macAddress(mac);
    Serial.print("MAC adresa: ");
    Serial.print(mac[5],HEX);
    Serial.print(":");
    Serial.print(mac[4],HEX);
    Serial.print(":");
    Serial.print(mac[3],HEX);
    Serial.print(":");
    Serial.print(mac[2],HEX);
    Serial.print(":");
    Serial.print(mac[1],HEX);
    Serial.print(":");
   Serial.println(mac[0],HEX);
}

void printCurrentNet() {
    //odesle SSID site
    Serial.print("SSID: ");
    Serial.println(WiFi.SSID());

    //odesle MAC adresu pristupoveho bodu
    byte bssid[6];
    WiFi.BSSID(bssid);    
    Serial.print("BSSID: ");
    Serial.print(bssid[5],HEX);
    Serial.print(":");
    Serial.print(bssid[4],HEX);
    Serial.print(":");
    Serial.print(bssid[3],HEX);
    Serial.print(":");
    Serial.print(bssid[2],HEX);
    Serial.print(":");
    Serial.print(bssid[1],HEX);
    Serial.print(":");
    Serial.println(bssid[0],HEX);

    //odesle silu signalu
    long rssi = WiFi.RSSI();
    Serial.print("Sila signalu:");
    Serial.println(rssi);

    //odesle typ zabezpeceni
    byte encryption = WiFi.encryptionType();
    Serial.print("Typ zabezpeceni:");
    Serial.println(encryption,HEX);
    Serial.println();
}